<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>按摩师</title>
  </head>
  <body>
    <script>
      // 一个有名的按摩师会收到源源不断的预约请求，每个预约都可以选择接或不接。在 约服务之间要有休息时间，因此她不能接受相邻的预约。给定一个预约请求序列，替按 到最优的预约集合（总预约时间最长），返回总的分钟数。
      // 示例：
      //  
      // 输出： 4
      // 解释： 选择 1 号预约和 3 号预约，总时长 = 1 + 3 = 4。

      // function getTime(nums) {
      //   let a = 0
      //   let b = 0
      //   for (let i = 0; i < nums.length; i++) {
      //     let c = Math.max(b, a + nums[i])
      //     a = b
      //     b = c
      //   }
      //   return b
      // }
      // console.log(getTime([1, 2, 3, 1]))

      function getTime(list = []) {
        const len = list.length
        if (len === 0) return 0
        if (len === 1) return list[0]
        // 代表当前项的最优解
        const dp = [list[0], Math.max(list[0], list[1])]
        for (let i = 2; i < len; i++) {
          // 当前预约有两个选择 接或者不接
          dp[i] = Math.max(list[i] + dp[i - 2], dp[i - 1])
        }
        console.log(dp)
        return dp[dp.length - 1]
      }
      console.log(getTime([1, 2, 3, 1]))
    </script>
  </body>
</html>
